package com.sskj.api.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sskj.api.domain.ProjectDevice;
import com.sskj.api.vo.req.ProjectDevicePageListReq;

public interface IProjectDeviceService extends IService<ProjectDevice> {

    /**
     * 新增
     * @param projectDevice 实例
     */
    void add(ProjectDevice projectDevice);

    /**
     * 删除
     * @param id 主键ID
     */
    void deleteById(Long id);

    /**
     * 更新
     * @param projectId 项目ID
     * @param deviceId 设备ID
     */
    void update(Long projectId, Long deviceId);

    /**
     * 根据项目ID删除关联设备信息
     * @param projectId 项目ID
     */
    void deleteByProjectId(Long projectId);

    /**
     * 根据设备ID删除关联项目信息
     * @param deviceId 设备ID
     */
    void deleteByDeviceId(Long deviceId);

    /**
     * 分页查询
     * @param req 查询实例
     * @return 分页集合
     */
    IPage<ProjectDevice> pageList(ProjectDevicePageListReq req);

    /**
     * 统计项目的设备总数
     * @param projectId 项目ID
     * @return 总数
     */
    Long countDevices(Long projectId);
}
